/*
then方法返回的是一个新的Promise实例（ 注意， 不是原来那个Promise实例）。 
因此可以采用链式写法， 即then方法后面再调用另一个then方法。
下面的代码使用then方法，依次指定了两个回调函数。4
第一个回调函数完成以后，会将返回结果作为参数，传入第二个回调函数。
*/
getJSON("/posts.json").then(function(json) { //两个then的情况
	return json.post;
}).then(function(post) {
	// ...
});



/*
采用链式的then，可以指定一组按照次序调用的回调函数。
这时，前一个回调函数，有可能返回的还是一个Promise对象（即有异步操作）
，这时后一个回调函数，就会等待该Promise对象的状态发生变化，才会被调用。

下面代码中，第一个then方法指定的回调函数，返回的是另一个Promise对象。
这时，第二个then方法指定的回调函数，就会等待这个新的Promise对象状态发生变化。
如果变为resolved，就调用第一个回调函数，如果状态变为rejected，就调用第二个回调函数。
*/
getJSON("/post/1.json").then(function(post) {
	return getJSON(post.commentURL);
}).then(function(comments) {
	console.log("resolved: ", comments);
}, function(err) {
	console.log("rejected: ", err);
});


//实验
let resolvedPromise = Promise.reject('a');
resolvedPromise.then(function(rs) { //两个then的情况
	return rs + '666';
}, err => {
	return err + '6';
}).then(function(post) {
	console.log(post)
}, err => {
	console.log(err)
});
